import axios from 'axios'
// 创建 axios 示例，将对创建出来的实例， 进行自定义配置
// 好处： 不会污染原始的axios实例
//组件路径
import {showDialog} from './dialog'
const instance = axios.create({
  // baseURL: 'http://192.168.1.51:8081/',
  baseURL: 'https://blind-box-api.ksbmtb.com:8443/',
  timeout: 60000,
  // content-type是标准的HTTP请求头之一，用于指定发送给服务器的实体正文的媒体类型
  headers: {
    'content-type': 'application/x-www-form-urlencoded',
  },
  // 配置对象中添加
  withCredentials: true 
});

// 自定义配置 - 请求/响应 拦截器
// 添加请求拦截器
instance.interceptors.request.use( 
    (config) => {
          // 在发送请求之前做些什么，例如加上token
        const token = uni.getStorageSync('token') ||'';
        if (token) {
          config.headers.token = token;
        }
      
        return config;
    },  (error) => {
        // 对请求错误做些什么
        return Promise.reject(error);
    });

// 添加响应拦截器
instance.interceptors.response.use( 
    (response) => {

      if(response.headers['token']){
        uni.setStorageSync('token',response.headers['token']);
      }

      // 2xx 范围内的状态码都会触发该函数。
      // 对响应数据做点什么 (默认axios会多包装一层data，需要响应拦截器处理一下)
      // console.log('ainstance',response)
      if(response.data.code == 401){
        // 弹出弹框组件
        showDialog()
      }else{
        
        return response.data
      }

    }, 
    (error) => {
       // 超出 2xx 范围的状态码都会触发该函数。
      // 对响应错误做点什么
      return Promise.reject(error);
    }
);

// 导出配置好的实例
export default instance
